void main() {
  var mylist = [1, 2, 3, 4, 5, 6];

  // forEach()的用法和js中差不多
  // mylist.forEach((element) => print(element));

  // for in也和js中的差不多
  // for (var value in mylist) {
  //   print(value);
  // }

  // map，和js中数组的的map方法一样，根据回调函数中的返回值生成一个新的非集合类型的数据，可以调用toList()转换一下，注意这个过程是不改变原集合的
  // var mylist2 = mylist.map((e) => e += 1); //将mylist中的每一个数据的值都加一，最后生成一个新的非集合类型的数据
  // print(mylist);//[1, 2, 3, 4, 5, 6]，mylist没有受到影响
  // print(mylist2.toList());//[2, 3, 4, 5, 6, 7]

  // where，有点像js中的filter，根据回调函数中的条件生成一个新的非集合类型的数据，可以调用toList()转换一下，注意这个过程是不改变原集合的
  // var mylist2 = mylist.where((item) => item > 3);
  // print(mylist2.toList()); //[4, 5, 6]，mylist没有受到影响

  // any，有点像js中数组的some方法，根据回调函数中的条件，只要集合中有一个满足该条件的，就返回true
  // print(mylist.any((item) => item > 2)); //true

  // every，有点像js中数组的every方法，根据回调函数中的条件，集合中必须所有项都满足条件，才返回true，否则返回false
  // print(mylist.every((item) => item < 100)); //true
  // print(mylist.every((item) => item > 3)); //false

  // 以forEach为例，set和map类型数据都是可以用的
  var s = new Set();
  s.addAll([1, 2, 3, 4, 5, 6]);
  s.forEach((element) => print(element));

  var m = {"name": "hzj", "age": 18};
  m.forEach((key, value) => print('$key --- $value'));
}
